// run: $exec < input
#include <iostream>
#include <unordered_map>

std::unordered_map<long long, long long> cost;
int n;

int main()
{
	std::ios::sync_with_stdio(false);
	std::cin >> n;
	for (int i = 0, opt; i < n; i++) {
		long long u, v, w;
		std::cin >> opt;
		if (opt == 1) {
			std::cin >> u >> v >> w;
			for (; u != v; v /= 2) {
				if (u > v) std::swap(u, v);
				cost[v] += w;
			}
		} else {
			std::cin >> u >> v;
			long long ans = 0;
			for (; u != v; v /= 2) {
				if (u > v) std::swap(u, v);
				ans += cost[v];
			}
			std::cout << ans << "\n";
		}
	}
}

